home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / VIG-PM10.ZIP / PROMAT.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-04-20  |  7KB  |  544 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Integer  INTEGER001
  24.     Integer  INTEGER002
  25.     Integer  INTEGER003
  26.     Integer  TINTEGER004(9)
  27.     Integer  INTEGER005
  28.     Integer  INTEGER006
  29.     Integer  INTEGER007
  30.     Integer  INTEGER008
  31.     Integer  INTEGER009
  32.     Integer  TINTEGER010(9)
  33.     Integer  TINTEGER011(9)
  34.     String   STRING001
  35.     String   STRING002
  36.     String   TSTRING003(10)
  37.     String   TSTRING004(9)
  38.     String   TSTRING005(2)
  39.     String   STRING006
  40.     String   STRING007
  41.     String   TSTRING008(9)
  42.     String   TSTRING009(100)
  43.     String   STRING010
  44.     String   STRING011
  45.     String   STRING012
  46.     String   STRING013
  47.     String   TSTRING014(33)
  48.     String   STRING015
  49.     String   STRING016
  50.     String   STRING017
  51.     String   STRING018
  52.     String   STRING019
  53.  
  54. ;------------------------------------------------------------------------------
  55.  
  56.     StartDisp 1
  57.     TSTRING005(0) = "ProMatrix v1.0 by ViGilante [PWA] "
  58.     TSTRING005(1) = "<UNREGISTERED>"
  59.     TSTRING005(2) = "    ,A=Up ,Z=Down <CR>=Choice"
  60.     STRING010 = "■ " + Left(TSTRING005(0), 9) + ": "
  61.     STRING001 = "@X08 ■ Via " + TSTRING005(0) + "■"
  62.     STRING018 = "ulas"
  63.     STRING019 = "drz" + Chr(9)
  64.     STRING002 = TSTRING005(0) + TSTRING005(1) + TSTRING005(2)
  65.     For INTEGER008 = 1 To Len(STRING002)
  66.         INTEGER007 = INTEGER007 + Asc(Mid(STRING002, INTEGER008, 1))
  67.     Next
  68.     If (INTEGER007 <> 6066) Hangup
  69.     FOpen 1, PPEPath() + "promat.cnf", 0, 0
  70.     For INTEGER008 = 1 To 10
  71.         FGet 1, TSTRING003(INTEGER008)
  72.     Next
  73.     FClose 1
  74.     STRING012 = Upper(ReadLine(PCBDat(), 2) + ReadLine(PCBDat(), 94))
  75.     FClose -1
  76.     INTEGER006 = 1
  77.     For INTEGER008 = 1 To Len(STRING012) Step 2
  78.         INTEGER006 = Left(INTEGER006 * Asc(Mid(STRING012, INTEGER008, 1)), 6)
  79.     Next
  80.     If (TSTRING003(1) == INTEGER006) BOOLEAN004 = 1
  81.     FOpen 1, PPEPath() + "strings.dat", 0, 0
  82.     For INTEGER008 = 1 To 33
  83.         FGet 1, TSTRING014(INTEGER008)
  84.     Next
  85.     FClose 1
  86.     For INTEGER008 = -2 To Right(Time(), 1)
  87.         INTEGER007 = 1 + Random(TSTRING003(2) - 1)
  88.     Next
  89.     FOpen 1, PPEPath() + "matrix" + String(INTEGER007) + ".cnf", 0, 0
  90.     :LABEL001
  91.     If (BOOLEAN001) Goto LABEL002
  92.     FGet 1, TSTRING004(INTEGER001)
  93.     FGet 1, STRING016
  94.     FGet 1, TSTRING008(INTEGER001)
  95.     If (TSTRING008(INTEGER001) == "") Then
  96.         BOOLEAN001 = 1
  97.     Else
  98.         Tokenize STRING016
  99.         TINTEGER010(INTEGER001) = GetToken()
  100.         TINTEGER011(INTEGER001) = GetToken()
  101.         TINTEGER004(INTEGER001) = GetToken()
  102.         FGet 1, STRING016
  103.         Inc INTEGER001
  104.     Endif
  105.     Goto LABEL001
  106.     :LABEL002
  107.     FClose 1
  108.     If ((Time() > ToTime(TSTRING003(8))) && (Time() < ToTime(TSTRING003(9)))) Then
  109.         INTEGER005 = 30
  110.         Gosub LABEL021
  111.         Newline
  112.         INTEGER005 = 31
  113.         Gosub LABEL021
  114.         InputStr " _", STRING011, 0, 25, Mask_Pwd(), 0
  115.         Newline
  116.         If (Lower(STRING011) <> Lower(TSTRING003(7))) Then
  117.             OpText TimeAp(TSTRING003(9))
  118.             INTEGER005 = 32
  119.             Gosub LABEL021
  120.             BOOLEAN003 = 1
  121.             BOOLEAN002 = 1
  122.             Goto LABEL003
  123.         Endif
  124.         INTEGER005 = 33
  125.         Gosub LABEL021
  126.         :LABEL003
  127.         Newline
  128.         Wait
  129.     Endif
  130.     :LABEL004
  131.     If (BOOLEAN003) Goto LABEL017
  132.     DispFile PPEPath() + "matrix" + String(INTEGER007) + ".pcb", 0
  133.     AnsiPos 1, 1
  134.     INTEGER008 = Random(5) + 1
  135.     Print "@X" + String(INTEGER008) + "F" + TSTRING005(0)
  136.     If (BOOLEAN004) Goto LABEL005
  137.     Print "@X" + I2S(INTEGER008 + 8, 16) + "F" + TSTRING005(1)
  138.     Goto LABEL006
  139.     :LABEL005
  140.     Print Space(Len(TSTRING005(1)))
  141.     :LABEL006
  142.     Print "@X" + String(INTEGER008) + "F" + TSTRING005(2)
  143.     STRING006 = ""
  144.     INTEGER002 = 0
  145.     Gosub LABEL018
  146.     While (STRING006 <> Chr(13)) Do
  147.         STRING006 = Left(Lower(Inkey()), 1)
  148.         If (InStr(STRING019, STRING006) <> 0) Then
  149.             Gosub LABEL019
  150.             Inc INTEGER002
  151.             If (INTEGER002 == INTEGER001) INTEGER002 = 0
  152.             Gosub LABEL018
  153.             Continue
  154.         Endif
  155.         If (InStr(STRING018, STRING006) <> 0) Then
  156.             Gosub LABEL019
  157.             Dec INTEGER002
  158.             If (INTEGER002 == -1) INTEGER002 = INTEGER001 - 1
  159.             Gosub LABEL018
  160.         Endif
  161.     EndWhile
  162.     Color 7
  163.     STRING011 = ""
  164.     STRING007 = ""
  165.     STRING002 = ScrText(1, 1, 34, 0)
  166.     If (STRING002 <> TSTRING005(0)) Hangup
  167.     Select Case (Lower(TSTRING004(INTEGER002)))
  168.         Case "logon"
  169.             If (Upper(TSTRING003(3)) <> "NONE") Then
  170.                 INTEGER005 = 1
  171.                 Cls
  172.                 Gosub LABEL021
  173.                 InputStr " _", STRING011, 0, 25, Mask_Pwd(), 0
  174.                 Newline
  175.                 If (Upper(STRING011) == Upper(TSTRING003(3))) Then
  176.                     INTEGER005 = 3
  177.                     Gosub LABEL021
  178.                     BOOLEAN003 = 1
  179.                 Else
  180.                     INTEGER005 = 2
  181.                     Gosub LABEL021
  182.                     Inc INTEGER003
  183.                     Log STRING010 + "Failed Logon, tried (" + STRING011 + ")", 0
  184.                 Endif
  185.                 Gosub LABEL020
  186.             Else
  187.                 BOOLEAN003 = 1
  188.             Endif
  189.         Case "apply"
  190.             INTEGER005 = 4
  191.             Cls
  192.             Gosub LABEL021
  193.             InputStr " _", STRING007, 0, 25, Mask_Pwd(), 0
  194.             Newline
  195.             If (STRING007 <> "") Then
  196.                 INTEGER009 = U_RecNum(Upper(STRING007))
  197.                 If (INTEGER009 < 1) Then
  198.                     If (Exist(PPEPath() + "carpet.red")) Then
  199.                         FOpen 1, PPEPath() + "carpet.red", 0, 0
  200.                         :LABEL007
  201.                         If (Ferr(1)) Goto LABEL008
  202.                         FGet 1, STRING016
  203.                         If (Upper(STRING016) == Upper(STRING007)) TSTRING003(4) = "NONE"
  204.                         Goto LABEL007
  205.                         :LABEL008
  206.                         FClose 1
  207.                     Endif
  208.                     If (Upper(TSTRING003(4)) == "NONE") Then
  209.                         INTEGER005 = 7
  210.                         Gosub LABEL021
  211.                         Gosub LABEL020
  212.                         BOOLEAN003 = 1
  213.                         KbdStuff STRING007 + Chr(13)
  214.                         Goto LABEL009
  215.                     Endif
  216.                     INTEGER005 = 6
  217.                     Gosub LABEL021
  218.                     InputStr " _", STRING011, 0, 25, Mask_Pwd(), 0
  219.                     Newline
  220.                     If (Upper(STRING011) == Upper(TSTRING003(4))) Then
  221.                         INTEGER005 = 9
  222.                         Gosub LABEL021
  223.                         Gosub LABEL020
  224.                         BOOLEAN003 = 1
  225.                         KbdStuff STRING007 + Chr(13)
  226.                         Goto LABEL009
  227.                     Endif
  228.                     INTEGER005 = 8
  229.                     Gosub LABEL021
  230.                     Inc INTEGER003
  231.                     Log STRING010 + "Failed Apply, tried (" + STRING011 + ")", 0
  232.                     Gosub LABEL020
  233.                     :LABEL009
  234.                     Goto LABEL010
  235.                 Endif
  236.                 INTEGER005 = 5
  237.                 Gosub LABEL021
  238.                 Gosub LABEL020
  239.             Endif
  240.             :LABEL010
  241.         Case "check"
  242.             INTEGER005 = 10
  243.             Cls
  244.             Gosub LABEL021
  245.             InputStr " _", STRING007, 0, 25, Mask_Pwd(), 0
  246.             Newline
  247.             If (Upper(TSTRING003(3)) <> "NONE") Then
  248.                 If (STRING007 <> "") Then
  249.                     INTEGER009 = U_RecNum(Upper(STRING007))
  250.                     If (INTEGER009 < 1) Then
  251.                         INTEGER005 = 11
  252.                         Gosub LABEL021
  253.                         Inc INTEGER003
  254.                         Log STRING010 + "Failed Check, tried (" + STRING007 + ")", 0
  255.                         Gosub LABEL020
  256.                         Goto LABEL013
  257.                     Endif
  258.                     INTEGER005 = 12
  259.                     Gosub LABEL021
  260.                     InputStr " _", STRING011, 0, 12, Mask_Pwd(), 1
  261.                     Newline
  262.                     GetAltUser INTEGER009
  263.                     If (Upper(STRING011) == Upper(U_Pwd)) Then
  264.                         If (U_Sec < TSTRING003(5)) Then
  265.                             INTEGER005 = 14
  266.                             Gosub LABEL021
  267.                             Gosub LABEL020
  268.                             If (Lower(TSTRING003(10)) == "yes") Then
  269.                                 KbdStuff STRING007 + Chr(13)
  270.                                 BOOLEAN003 = 1
  271.                             Endif
  272.                             Goto LABEL011
  273.                         Endif
  274.                         OpText Upper(TSTRING003(3))
  275.                         INTEGER005 = 15
  276.                         Gosub LABEL021
  277.                         Newline
  278.                         INTEGER005 = 17
  279.                         Gosub LABEL021
  280.                         InputYN " _", STRING017, 7
  281.                         Newline
  282.                         If (STRING017 == YesChar()) Then
  283.                             KbdStuff STRING007 + Chr(13)
  284.                             BOOLEAN003 = 1
  285.                             Goto LABEL011
  286.                         Endif
  287.                         Inc INTEGER003
  288.                         :LABEL011
  289.                         Goto LABEL012
  290.                     Endif
  291.                     INTEGER005 = 13
  292.                     Gosub LABEL021
  293.                     Inc INTEGER003
  294.                     Log STRING010 + "Failed Check, tried (" + STRING007 + "," + STRING011 + ")", 0
  295.                     Gosub LABEL020
  296.                     :LABEL012
  297.                     PutUser
  298.                 Endif
  299.                 :LABEL013
  300.             Else
  301.                 INTEGER005 = 16
  302.                 Gosub LABEL021
  303.                 Gosub LABEL020
  304.             Endif
  305.         Case "feedback"
  306.             OpText ReadLine(PCBDat(), 2)
  307.             FClose -1
  308.             Cls
  309.             INTEGER005 = 21
  310.             Gosub LABEL021
  311.             Newline
  312.             INTEGER005 = 22
  313.             Gosub LABEL021
  314.             InputStr " _", STRING007, 0, 25, Mask_Pwd(), 0
  315.             Newline
  316.             If (STRING007 <> "") Then
  317.                 INTEGER005 = 23
  318.                 Gosub LABEL021
  319.                 InputStr " _", STRING015, 0, 25, Mask_Pwd(), 0
  320.                 Newline
  321.                 If (STRING015 <> "") Then
  322.                     OpText TSTRING003(6)
  323.                     INTEGER005 = 24
  324.                     Gosub LABEL021
  325.                     Newline
  326.                     INTEGER005 = 25
  327.                     Gosub LABEL021
  328.                     Newline
  329.                     INTEGER002 = 1
  330.                     STRING017 = YesChar()
  331.                     BOOLEAN001 = 0
  332.                     :LABEL014
  333.                     If (BOOLEAN001) Goto LABEL016
  334.                     TSTRING009(INTEGER002) = ""
  335.                     InputStr "_", TSTRING009(INTEGER002), 0, 78, Mask_Pwd(), 512
  336.                     Newline
  337.                     If (Lower(TSTRING009(INTEGER002)) == "/s") Then
  338.                         BOOLEAN001 = 1
  339.                         Newline
  340.                         INTEGER002 = 1
  341.                         FCreate 1, PPEPath() + "feedback." + String(PcbNode()), 1, 3
  342.                         While (Lower(TSTRING009(INTEGER002)) <> "/s") Do
  343.                             FPutLn 1, TSTRING009(INTEGER002)
  344.                             Inc INTEGER002
  345.                         EndWhile
  346.                         FPutLn 1, ""
  347.                         FPutLn 1, STRING001
  348.                         FClose 1
  349.                         Message 0, Upper(ReadLine(PCBDat(), 2)), Upper(STRING007), STRING015, "R", 0, 0, 0, PPEPath() + "feedback." + String(PcbNode())
  350.                         FClose -1
  351.                         Delete PPEPath() + "feedback." + String(PcbNode())
  352.                         INTEGER005 = 26
  353.                         Gosub LABEL021
  354.                         Gosub LABEL020
  355.                         Goto LABEL015
  356.                     Endif
  357.                     If (Lower(TSTRING009(INTEGER002)) == "/a") Then
  358.                         BOOLEAN001 = 1
  359.                         Newline
  360.                         INTEGER005 = 27
  361.                         Gosub LABEL021
  362.                         Gosub LABEL020
  363.                     Endif
  364.                     :LABEL015
  365.                     Inc INTEGER002
  366.                     Goto LABEL014
  367.                 Endif
  368.             Endif
  369.             :LABEL016
  370.         Case "logoff"
  371.             INTEGER005 = 28
  372.             Cls
  373.             Gosub LABEL021
  374.             BOOLEAN003 = 1
  375.             BOOLEAN002 = 1
  376.         Case Else
  377.             Cls
  378.             DispStr TSTRING004(INTEGER002)
  379.             StartDisp 1
  380.             Gosub LABEL020
  381.     End Select
  382.     Goto LABEL004
  383.     :LABEL017
  384.     If (BOOLEAN002) Bye
  385.     StartDisp 2
  386.     End
  387.     :LABEL018
  388.     STRING013 = ScrText(TINTEGER010(INTEGER002), TINTEGER011(INTEGER002), TINTEGER004(INTEGER002), 1)
  389.     AnsiPos TINTEGER010(INTEGER002), TINTEGER011(INTEGER002)
  390.     Print TSTRING008(INTEGER002)
  391.     AnsiPos TINTEGER010(INTEGER002), TINTEGER011(INTEGER002)
  392.     Return
  393.     :LABEL019
  394.     AnsiPos TINTEGER010(INTEGER002), TINTEGER011(INTEGER002)
  395.     Print STRING013
  396.     Return
  397.     :LABEL020
  398.     Newline
  399.     Wait
  400.     If (INTEGER003 == 3) Then
  401.         Newline
  402.         DispStr TSTRING014(29)
  403.         Newline
  404.         BOOLEAN003 = 1
  405.         BOOLEAN002 = 1
  406.     Endif
  407.     Return
  408.     :LABEL021
  409.     DispStr TSTRING014(INTEGER005)
  410.     StartDisp 1
  411.     Return
  412.  
  413. ;------------------------------------------------------------------------------
  414. ;
  415. ; Usage report (before postprocessing)
  416. ;
  417. ; ■ Statements used :
  418. ;
  419. ;    1       End
  420. ;    6       Cls
  421. ;    2       Wait
  422. ;    1       Color 
  423. ;    72      Goto 
  424. ;    89      Let 
  425. ;    6       Print 
  426. ;    48      If 
  427. ;    1       DispFile 
  428. ;    1       FCreate 
  429. ;    4       FOpen 
  430. ;    8       FClose 
  431. ;    7       FGet 
  432. ;    3       FPutLn 
  433. ;    4       StartDisp 
  434. ;    2       Hangup
  435. ;    1       PutUser
  436. ;    1       Delete 
  437. ;    4       Log 
  438. ;    9       InputStr 
  439. ;    1       InputYN 
  440. ;    46      Gosub 
  441. ;    4       Return
  442. ;    9       Inc 
  443. ;    1       Dec 
  444. ;    21      Newline
  445. ;    1       Tokenize 
  446. ;    4       KbdStuff 
  447. ;    1       Bye
  448. ;    4       OpText 
  449. ;    3       DispStr 
  450. ;    4       AnsiPos 
  451. ;    1       Message 
  452. ;    1       GetAltUser 
  453. ;
  454. ;
  455. ; ■ Functions used :
  456. ;
  457. ;    5       -
  458. ;    1       *
  459. ;    60      +
  460. ;    2       -
  461. ;    19      ==
  462. ;    13      <>
  463. ;    9       <
  464. ;    5       <=
  465. ;    1       >
  466. ;    10      >=
  467. ;    41      !
  468. ;    11      &&
  469. ;    5       ||
  470. ;    5       Len(
  471. ;    12      Lower()
  472. ;    17      Upper()
  473. ;    2       Mid()
  474. ;    3       Left()
  475. ;    2       Right()
  476. ;    1       Space()
  477. ;    1       Ferr()
  478. ;    6       Chr()
  479. ;    2       Asc()
  480. ;    2       InStr()
  481. ;    2       Random()
  482. ;    4       Time()
  483. ;    1       TimeAp()
  484. ;    2       YesChar()
  485. ;    1       Inkey()
  486. ;    7       String()
  487. ;    9       Mask_Pwd()
  488. ;    4       PCBDat()
  489. ;    9       PPEPath()
  490. ;    3       PcbNode()
  491. ;    4       ReadLine()
  492. ;    3       GetToken()
  493. ;    1       Exist()
  494. ;    1       I2S()
  495. ;    2       U_RecNum()
  496. ;    2       ScrText()
  497. ;    2       ToTime()
  498. ;
  499. ;------------------------------------------------------------------------------
  500. ;
  501. ; Analysis flags : WRBdH
  502. ;
  503. ; W - Write user ■ 5
  504. ;     Program writes a user record. Although this may be normal for a
  505. ;     User Editor, it may also be a way to modify an account level.
  506. ;     ■ Search for : PUTUSER
  507. ;
  508. ; R - Read user ■ 5
  509. ;     User records are read, this may signify that someone wants to get
  510. ;     various informations about a user (for example his password), but
  511. ;     this may also be normal for a program accessing user records (for
  512. ;     example a User Editor)
  513. ;     ■ Search for : GETALTUSER
  514. ;
  515. ; B - Brute hangup ■ 1
  516. ;     Program hangup without notification. This may be a good way to
  517. ;     disconnect a user, but if used randomly, may be very nasty
  518. ;     ■ Search for : HANGUP, DTROFF
  519. ;
  520. ; d - Access PCBOARD.DAT ■ 2
  521. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  522. ;     for many PPE so they can find various informations on the system
  523. ;     (system paths, max number of lines in messages, ...) but it may also
  524. ;     be a way to gather vital informations.
  525. ;     ■ Search for : PCBDAT()
  526. ;
  527. ; H - Read Password or Password History ■ 5
  528. ;     Program is reading the user's password or last password history
  529. ;     This may be ok for a password manager, but it is very suspect. Check!
  530. ;     ■ Search for : U_PWDHIST, U_PWD
  531. ;
  532. ;------------------------------------------------------------------------------
  533. ;
  534. ; Postprocessing report
  535. ;
  536. ;    5       For/Next
  537. ;    2       While/EndWhile
  538. ;    24      If/Then or If/Then/Else
  539. ;    1       Select Case
  540. ;
  541. ;------------------------------------------------------------------------------
  542. ;                 AEGiS Corp - Break the routines, code against the machines!
  543. ;------------------------------------------------------------------------------
  544.